7. Коллекция тестовых матриц
Предлагаемая ниже небольшая часть коллекции тестовых матриц интересна как с позиций хотя бы дилетантского знакомства с итогами многовекового математического творчества, так и тестирования элементов собственных программных разработок.
hadamard (n) - матрица Адамара (ортогональная матрица из 1 и -1); n должно быть целым и n, n/12 или n/20 должны быть степенью 2:
>> hadamard (4)
| ans =1 | 1 | 1 | 1
|
| 1 | -1 | 1 | -1
|
| 1 | 1 | -1 | -1
|
| 1 | -1 | -1 | 1 |
hilb (n), invhilb(n) - матрица Гильберта hij=1/(i+j-1) и ей обратная (пример матрицы, плохо обусловленной :к обращению):
| >>A=hilb(3)
| | A = | 1.0000 | 0.5000 | 0.3333
| | 0.5000 | 0.3333 | 0.2500
| | 0.3333 | 0.2500 | 0.2000 |
|
| >> B=invhilb(3)
| | B = | 9 | -36 | 30
| | -36 | 192 | -180
| | 30 | -180 | 180 |
|
| >> det(A)
| | ans =
| | 4.6296e-004 |
|
magic(n) - магический квадрат (квадратная матрица с элементами от 1 до n2 с равными суммами элементов по строкам и столбцам):
| >> magic(2)
| | ans = | 1 | 3
| | 4 | 2 |
|
| >> magic(3)
| | ans = | 8 | 1 | 6
| | 3 | 5 | 7
| | 4 | 9 | 2 |
|
pascal(n) - матрица Паскаля - симметрическая матрица из коэффициентов разложения бинома (1+х)j (треугольника Паскаля)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
| >> pascal(3)
| | ans = | 1 | 1 | 1
| | 1 | 2 | 3
| | 1 | 3 | 6 |
|
| >>pascal(5)
| | ans = | 1 | 1 | 1 | 1 | 1
| | 1 | 2 | 3 | 4 | 5
| | 1 | 3 | 6 | 10 | 15
| | 1 | 4 | 10 | 20 | 35
| | 1 | 5 | 15 | 35 | 70 |
|
rosser - матрица Рессера (матрица 8-го порядка, служащая тестом для алгоритмов решения симметричной проблемы собственных значений ):
| 611 | 196 | -192 | 407 | -8 | -52 -49 | 29
|
| 196 | 899 | 113 | -192 | -71 | -43 -8 | -44
|
| 192 | 113 | 899 | 196 | 61 | 49 8 | 52
|
| 407 | -192 | 196 | 611 | 8 | 44 59 | -23
|
| 8 | -71 | 61 8 | 411 | -599 | 208 | 208
|
| 52 | -43 | 49 44 | -599 | 411 | 208 | 208
|
| 49 | -8 | 8 59 | 208 | 208 | 99 | -911
|
| 29 | -44 | 52 -23 | 208 | 208 | -911 | 99 |
имеет два кратных значения, три близких, нулевое и малое ненуле-вое):
| 1000 | 1000 | 1020.049 | 1020.000 | 1019.902 | 0.098 | 0 | -1020.049 |
toepliz(Х) - симметрическая матрица Теплица, определяющая перестановки элементов вектора Х ;
toepliz(Х,Y) - несимметрическая матрица Теплица, первый столбец которой совпадает с вектором X и первая строка с вектором Y (если х1№ у1, возникает конфликт на главной диагонали с предпочтением для X):
| >> x=[1 3 5 7];
| | >> toeplitz(x)
| | ans = | 1 | 3 | 5 | 7
| | 3 | 1 | 3 | 5
| | 5 | 3 | 1 | 3
| | 7 | 5 | 3 | 1 |
|
| >> x=[1 3 5 7];
| | >> y=[1 11 21 31];
| | >> toeplitz(x,y)
| | ans = | 1 | 11 | 21 | 31
| | 3 | 1 | 11 | 21
| | 5 | 3 | 1 | 11
| | 7 | 5 | 3 | 1 |
|
| >> x=[1 3 5 7];
| | >> y=[-1 -11 -21 -31];
| | >> toeplitz(x,y)
| | Column wins diagonal conflict
| | .ans = | 1 | -11 | -21 | -31
| | 3 | 1 | -11 | -21
| | 5 | 3 | 1 | -11
| | 7 | 5 | 3 | 1 |
|
wilkinson(n) - матрица Уилкинсона (трехдиагональная симметрическая матрица n-го порядка, служащая тестом для алгоритмов решения проблемы собственных значений ; обычно берут n=21, где возникают кратные и близкие значения);
vander(X) - матрица Вандермонда (размерность совпадает с числом n элементов вектора Х Vij=xin-j):
| >> wilkinson(4)
| | ans =
| | 1.5000 | 1.0000 | 0 | 0
| | 1.0000 | 0.5000 | 1.0000 | 0
| | 0 | 1.0000 | 0.5000 | 1.0000
| | 0 | 0 | 1.0000 | 1.5000 |
|
| x= [1 2 3 5]
| | >> vander(x)
| | ans = | 1 | 1 | 1 | 1
| | 8 | 4 | 2 | 1
| | 27 | 9 | 3 | 1
| | 125 | 25 | 5 | 1 |
|
Ряд тестовых матриц упакован в специальный подкаталог, вызываемый командой :
[<выходные параметры>]= gallery('имя матрицы', <входные параметры>)
К их числу относятся -
cauchy(X,Y), cauchy(X) - матрица Коши с элементами Cij=1/(xi+yj): при монотонно возрастающих последовательностях Х и Y матрица положительно определенная;
circul(Х) - циркулянтная матрица, получается из вектора Х построчно циклической перестановкой его элементов; если X скаляр, то берется вектор [1:X]; ее собственное значение равно скалярному произведениюХ и вектора [1 t t2 ... tn-1 ] , где t - корень n-й степени из -1:
| >> x=[1 2 3 5];
| | >> y=[1 2 100 200];
| | >> gallery('cauchy',x,y)
| | ans = | 0.5000 | 0.3333 | 0.0099 | 0.0050
| | 0.3333 | 0.2500 | 0.0098 | 0.0050
| | 0.2500 | 0.2000 | 0.0097 | 0.0049
| | 0.1667 | 0.1429 | 0.0095 | 0.0049 |
|
| >> gallery('circul',[1 3 6 9])
| | ans =
| | 1 | 3 | 6 | 9
| | 9 | 1 | 3 | 6
| | 6 | 9 | 1 | 3
| | 3 | 6 | 9 | 1 |
|
clement(n,sym) - трехдиагональная n-мерная матрица Клемента с нулями на главной диагонали с собственными значениями из последовательности [n1, n-3 ,n-5...] c плюсом и минусом (при нечетном n добавляется 0 или 1); sym=1 определяет симметричность матрицы:
| >> gallery('clement',4)
| | ans =
| | 0 | 1 | 0 | 0
| | 3 | 0 | 2 | 0
| | 0 | 2 | 0 | 3
| | 0 | 0 | 1 | 0
| | >> eig(ans)
| | ans = | 3 | -3 | 1 | -1 |
|
| >> gallery('clement',4,1)
| | ans=
| | 0 | 1.7320 | 0 | 0
| | 1.7320 | 0 | 2.0000 | 0
| | 0 | 2.0000 | 0 | 1.7320
| | 0 | 0 | 1.7320 | 0
| | >> eig(ans)
| | ans = | 3 | -3 | 1 | -1 |
|
| >> gallery('clement',3,1)
| | ans =
| | 0 | 1.4142 | 0
| | 1.4142 | 0 | 1.4142
| | 0 | 1.4142 | 0
| | eig(ans)
| | ans = | 2 | 0 | -2 |
|
Кроме упомянутых в подкаталог входят еще свыше 40 тестовых матриц, связанных с проблемой собственных значений, обращением, полиномами Чебышева и др.